Various embodiments of this disclosure relate to vector processors and, more particularly, to multithreading in vector processors.
A vector processor is a computer processor, or central processing unit (CPU), that executes instructions to operate on vectorized data, which is data maintained in a vector. A vector is a contiguous data set that holds multiple data elements, and a vector is generally stored in a vector register. A vector's length (i.e., the number of data elements the vector includes) may be determined by the size of the vector register maintaining the vector. For example, some vector registers allow vectors of length 32, which have 32 data elements. A vector register file on a vector processor maintains one or more vector registers on which the vector processor can operate.
There are two general categories of vector processors. In the first category, which includes many older processors, the vector processor is able to operate on only one data element of the vector at a time. An example of such a vector processor is the Cray-1 processor. The second category, however, is defined by an ability to operate on all data elements of a vector simultaneously. The vector units in most microprocessors belong to this second category, employ vectors that are generally smaller in length (e.g., lengths of 2, 4, 8 or 16 at most) than those of the first category, and are often referred to as single-instruction-multiple-data (SIMD) units. Formally, however, the term SIMD is more generic and encompasses both categories of vector processors.